iT邦幫忙

2024 iThome 鐵人賽

DAY 12
1
IT 管理

30天從版控到code review的實踐指南系列 第 12

Day 12. Git 操作入門:實作自動化加Release 版號(GitHub Actions)-中篇。

  • 分享至 

  • xImage
  •  

透過GitHub Actions 發布 Release 版號


結合 GitHub Actions,透過自動化流程來進行版本號的自動遞增與發布以提升效率。在發 PR 時,結合 Version Tag 自動生成版本號內容。以下將實作結合 GitHub Actions 來自動發布版本號的流程:

  • 使用 Semmantic Versioning 版本號命名原則,參考上篇

  • 需要在 GitHub 建立三個 YAML 檔文件。

    • .github/workflows/create-release.yml:依據 SemVer 加入 Tag ,例如:v1.3.35push 後便會觸發此工作流程,此 .yml 檔名可以自己取名。

      name: 'Create Release' 
      # 此 workflow 的名稱,功用:創 Release 版本。
      
      on:
        push:
          branches:
      	    - main
      
      # on:workflow 觸發條件。
      # push:當 code 被 push 到 main 分支時,會觸發此 workflow。
      
      jobs:
        release:
          runs-on: windows-latest
          steps:
            - name: Checkout code
              uses: actions/checkout@v3
            # 現有的 GitHub 官方 Action。將專案程式碼 Checkout,接著可進行測試,部署等。
      
            - name: Set up Node.js
              uses: actions/setup-node@v3
              with:
                node-version: '16'
            # 建立 Node.js 環境,因為 semantic-release 通常依賴 Node.js。
      
            - name: Install dependencies
              run: npm install
            # npm install 以執行 semantic-release。
      
            - name: Run Semantic Release
              uses: semantic-release/semantic-release@v19
              env:
                GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            # 使用 semantic-release 自動管理版本號和創 GitHub Release。  
            with:
                plugins: |
                  [
                    "@semantic-release/commit-analyzer",
                    "@semantic-release/release-notes-generator",
                    "@semantic-release/changelog",
                    "@semantic-release/github"
                  ]
        # @semantic-release/commit-analyzer:分析 commit message or PR 標題來決定版本號(major, minor, patch)。
      	# @semantic-release/release-notes-generator:生成 Release 說明,可以根據 PR 標題來分類。
      	# @semantic-release/changelog:更新 CHANGELOG.md 文件,並將每個 PR 歸類到相應的 Release 說明中。
      	# @semantic-release/github:自動在 GitHub 上創一個 Release。
      
  • PR 標題如何撰寫才能出現在 Release 自動生成文件

    • commit message 或 PR 標題按照 Conventional Commits 規範書寫
      • conventional commits 規範 PR 標題

        fix: 修正了表單提交錯誤 (#123)
        feat: 新增用戶通知功能 (#456)
        
      • 關鍵字

        	•	fix: 對應小的 Bug 修復(Patch)。
        	•	feat: 新功能(Minor)。
        	•	BREAKING CHANGE: 對應重大變更(Major)。
        
      • 屬於 Bug 修復類型的 PR 會自動被標記為 fix,並在 Release 文件中生成「Bug Fixes」的標題。

      • 新功能會被標記為 feat,並生成「Features 」標題。

    可以修改 release-notes-generator ,進一步定義原則,讓它們對應 PR 上的標題。

    Summary


    透過 PR 標題或內容自動生成有規則的 Release 文件。


上一篇
Day 11. Git 操作入門:實作自動化加Release版號(GitHub Action)-上篇。
下一篇
Day 13. Git 操作入門:實作自動化加Release 版號(GitHub Actions)-下篇。
系列文
30天從版控到code review的實踐指南30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言